package com.baomidou.kisso.oauth2demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.baomidou.kisso.oauth2demo.entity.User;
import com.baomidou.kisso.oauth2demo.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {

	@Autowired
	private UserService userService;


	@RequestMapping(method = RequestMethod.GET)
	public String list( Model model ) {
		model.addAttribute("userList", userService.findAll());
		return "user/list";
	}


	@RequestMapping(value = "/create", method = RequestMethod.GET)
	public String showCreateForm( Model model ) {
		model.addAttribute("user", new User());
		return "user/add";
	}


	@RequestMapping(value = "/create", method = RequestMethod.POST)
	public String create( User user, RedirectAttributes redirectAttributes ) {
		userService.createUser(user);
		redirectAttributes.addFlashAttribute("msg", "新增成功");
		return "redirect:/user";
	}


	@RequestMapping(value = "/{id}/update", method = RequestMethod.GET)
	public String showUpdateForm( @PathVariable("id" ) Long id, Model model) {
		model.addAttribute("user", userService.findOne(id));
		return "user/edit";
	}


	@RequestMapping(value = "/{id}/update", method = RequestMethod.POST)
	public String update( User user, RedirectAttributes redirectAttributes ) {
		userService.updateUser(user);
		redirectAttributes.addFlashAttribute("msg", "修改成功");
		return "redirect:/user";
	}


	@RequestMapping(value = "/{id}/delete", method = RequestMethod.GET)
	public String delete( @PathVariable("id" ) Long id, RedirectAttributes redirectAttributes) {
		userService.deleteUser(id);
		redirectAttributes.addFlashAttribute("msg", "删除成功");
		return "redirect:/user";
	}


	@RequestMapping(value = "/{id}/changePassword", method = RequestMethod.GET)
	public String showChangePasswordForm( @PathVariable("id" ) Long id, Model model) {
		model.addAttribute("user", userService.findOne(id));
		return "user/changePassword";
	}


	@RequestMapping(value = "/{id}/changePassword", method = RequestMethod.POST)
	public String changePassword( @PathVariable("id" ) Long id, String newPassword,
			RedirectAttributes redirectAttributes) {
		userService.changePassword(id, newPassword);
		redirectAttributes.addFlashAttribute("msg", "修改密码成功");
		return "redirect:/user";
	}

}
